Прежде чем мы сможем обсудить многие детали действия TCP протокола, нам необходимо ввести подробную терминологию. Для поддержания TCP соединения необходимо иметь несколько переменных. Мы решили, что эти переменные будут помещены в соответствующую запись - блок управления передачей (Transmission Control Block - TCB). Среди переменных блока TCB имеются номера местного и чужого сокетов, флаги безопасности и приоритета для данного соединения, указатели буферов посылки и получения, указатели текущего сегмента и очереди повторной посылки. Кроме всего этого в TCB имеются несколько переменных, имеющих отношение к номерам очередей отправителя и получателя.
| SND.UNA | посылка неподтверждена |
|---|---|
| SND.NXT | послать следующий сегмент |
| SND.WND | отправить окно |
| SND.UP | отправить срочный указатель |
| SND.WL1 | номер очереди сегмента, использованный для обновления последнего окна |
| SND.WL2 | номер подтверждения в сегменте, используемый для обновления последнего окна |
| ISS | первоначальный номер очереди отправления |
| RCV.NXT | - получить следующий сегмент |
|---|---|
| RCV.WND | - получить окно |
| RCV.UP | - получить срочный указатель |
| IRS | - первоначальный номер очереди получения |
Нижеприведенные диаграммы могут помочь связать некоторые из этих переменных с местом в очереди
Очередь отправления

Окно отправления - это участок очереди, отмеченный меткой 3 на рисунке 2.
Очередь получения

Окно получения - это участок очереди, отмеченный меткой 2 на рисунке 3.
В обсуждении также часто используются некоторые переменные, берущие свое значение из полей очередного сегмента.
Переменные для очередного сегмента
| SEG.SEQ | номер очереди для сегмента |
|---|---|
| SEG.ACK | номер подтверждения для сегмента |
| SEG.LEN | длина сегмента |
| SEG.WND | окно для сегмента |
| SEG.UP | срочный указатель для сегмента |
| SEG.PRC | приоритет для сегмента |
Соединение во время функционирования проходит через серии промежуточных состояний. Это состояния LISTEN, SYN-SENT, SYN-RECEIVED, ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, LAST-ACK, TIME-WAIT, а также фиктивное состояние CLOSED. Состояние CLOSED является фиктивным, поскольку оно представляет состояние, когда не существует блока TCP, а потому и нет соединения. Краткое описание состояний:
| LISTEN | Ожидание запроса на соединение со стороны чужих портов и программ TCP |
|---|---|
| SYN-SENT | Ожидание парного запроса на установление соединения. С нашей стороны запрос уже сделан. |
| SYN-RECEIVED | Ожидание подтверждения после того, как запрос соединения уже принят и отправлен. |
| ESTABLISHED | Состояние открытого соединения, принимаемые данные можно представить пользователю. Это нормальное состояние соединения в фазе передачи данных. |
| FIN-WAIT-1 | Ожидание запроса от чужой программы TCP, или подтверждения ранее отправленного запроса на закрытие соединения. |
| FIN-WAIT-2 | Ожидание запроса на закрытие соединения со стороны чужой программы TCP. |
| CLOSE-WAIT | Ожидание запроса на закрытие соединения со стороны своего клиента. |
| CLOSING | Ожидание подтверждения со стороны чужой программы TCP запроса о закрытии соединения. |
| LAST-ACK | Ожидание запроса на закрытие соединения, ранее отправленного чужой программе TCP (запрос включал также подтверждение получения чужого запроса на закрытие соединения). |
| TIME-WAIT | Ожидание когда истечет достаточное количество времени и можно быть уверенным, что чужая программа TCP получила подтверждение своего запроса на закрытие соединения. |
| CLOSED | Состояние полного отсутствия соединения. |
Соединение TCP переходит с одного состояния на другое в ответ на события. Событие - это запросы клиента (открытие, посылка, получение, закрытие, отказ, получение состояния соединения), приход сегментов, и особенно тех, которые содержат флаги SYN, ACK, RST и FIN, а также истечение выделенного времени.
Диаграмма состояний на рисунке иллюстрирует лишь смену состояний, а также вызвавшие это события, производимые действия, но не адреса, условия ошибок, не действия, не связанные прямо с изменением состояния.
Замечание. Данная диаграмма является лишь сводной, но не должна восприниматься как полная спецификация.